/**
 * 处理以逗号分割字符串，转化为数组
 * 传入一个以逗号分隔的字符串
 * 返回一个数组
 */
const dealStr = function(str) {
    var array = []
    if (str) {
        // 把获取的数据转化为字符串类型
        str = str.toString()
        // 如果字符串的首位和末位时逗号的，先把逗号去掉
        if (str[0] == ',') {
            str = str.slice(1, str.length)
        }
        if (str[str.length - 1] == ',') {
            str = str.slice(0, str.length - 1)
        }
        array = str.split(',')
    }
    return array
}

/**
 * 处理以-分割字符串，转化为数组
 * 传入一个以逗号分隔的字符串
 * 返回一个数组
 */
function dealStr1(str) {
    var array = []
    if (str) {
        // 把获取的数据转化为字符串类型
        str = str.toString()
        // 如果字符串的首位和末位时逗号的，先把逗号去掉
        if (str[0] == '-') {
            str = str.slice(1, str.length)
        }
        if (str[str.length - 1] == '-') {
            str = str.slice(0, str.length - 1)
        }
        array = str.split('-')
    }
    return array
}

// 将时间戳转换日期时间格式（YYYY-MM-DD HH:MM:SS）
function add0(m) {
    return m < 10 ? '0' + m : m
}
const timestampToDatetime = timestamp => {
    var time = new Date(timestamp)
    var y = time.getFullYear()
    var m = time.getMonth() + 1
    var d = time.getDate()
    var h = time.getHours()
    var mm = time.getMinutes()
    var s = time.getSeconds()
    return y + '-' + add0(m) + '-' + add0(d) + ' ' + add0(h) + ':' + add0(mm) + ':' + add0(s)
}

// 将时间戳转换日期格式（YYYY-MM-DD）
const timestampToDate = timestamp => {
    if (!timestamp) return ''
    if (isNaN(timestamp)) return timestamp
    var time = new Date(parseInt(timestamp))
    var y = time.getFullYear()
    var m = time.getMonth() + 1
    var d = time.getDate()
    return y + '-' + add0(m) + '-' + add0(d)
}
/**
 * 两个时间相差天数
 * sDate1为yyyy-mm-dd格式
 */
const datedifference = function(sDate1, sDate2) {
    var dateSpan, iDays
    sDate1 = Date.parse(sDate1)
    sDate2 = Date.parse(sDate2)
    dateSpan = sDate2 - sDate1
    dateSpan = Math.abs(dateSpan)
    iDays = Math.floor(dateSpan / (24 * 3600 * 1000))
    return iDays + 1
}
/**
 * 日期加减
 * 天数
 */
const addDate = function(date, addDays) {
    //date传入你需要的日期，格式"xxxx-xx-xx"。addDays传要加减的日期数，往前传正数，往后传负数
    var Dates = new Date(date)
    Dates.setDate(Dates.getDate() + addDays)
    var mon = Dates.getMonth() + 1,
        day = Dates.getDate()
    if (mon < 10) {
        mon = '0' + mon //月份小于10，在前面补充0
    }
    if (day < 10) {
        day = '0' + day //日小于10，在前面补充0
    }
    return Dates.getFullYear() + '-' + mon + '-' + day
}

/**
 * 日期格式化
 * type
 * yyyy-mm-dd hh:mm:ss 2018-10-10 10:10：10
 * yyyy-mm-dd  2018-10-10
 */
const format_date = function(date = '', type = 'yyyy-mm-dd') {
    var res
    res = new Date(+new Date(date) + 8 * 3600 * 1000)
        .toISOString()
        .replace(/T/g, ' ')
        .replace(/\.[\d]{3}Z/, '')
    if ((type = 'yyyy-mm-dd')) {
        res = res.substring(0, 10)
    }
    return res
}
/**
 * 判断是否需要拼接
 * url  地址
 * return 已经拼接的地址
 */
function dealUrl(url, ip) {
    if (url) {
        // 判断，如果图片开头不是https://或者http://,则处理图片
        if (url.slice(0, 8) != 'https://' && url.slice(0, 7) != 'http://') {
            url = ip + url
        }
    }

    return url
}
/**
 * 对象数组排序
 * @param {Array} arr
 * @param {String} props
 * @param {String} type 1-升序  2-倒序
 */
function sortArrObj(arr, props, type) {
    function sortBy(props) {
        return function(a, b) {
            if (type == 1) return a[props] - b[props]
            if (type == 2) return b[props] - a[props]
        }
    }
    arr.sort(sortBy(props))
    return arr
}

// 手机号，固话校验
function checkPhone(phone) {
    var isPhone = /^([0-9]{3,4}-)?[0-9]{7,8}$/
    var isMob = /^((\+?86)|(\(\+86\)))?(13[012356789][0-9]{8}|15[012356789][0-9]{8}|18[02356789][0-9]{8}|147[0-9]{8}|1349[0-9]{7})$/
    if (isMob.test(phone) || isPhone.test(phone)) return true
    else return false
}


/**
 * 关键信息隐藏
 * @param str 字符串
 * @param frontLen 字符串前面保留位数
 * @param endLen 字符串后面保留位数
 * @returns {string}
 */
 function hideCode(str, frontLen, endLen) {
    var len = str.length - frontLen - endLen
    var xing = ''
    for (var i = 0; i < len; i++) {
        xing += '*'
    }
    return str.substring(0, frontLen) + xing + str.substring(str.length - endLen)
}
module.exports = {
    dealStr: dealStr,
    dealStr1: dealStr1,
    timestampToDatetime: timestampToDatetime,
    timestampToDate: timestampToDate,
    datedifference: datedifference,
    addDate: addDate,
    format_date: format_date,
    dealUrl: dealUrl,
    sortArrObj: sortArrObj,
    checkPhone: checkPhone,
    hideCode:hideCode
}
